/**
 * 预约时间格式化工具
 *
 * 统一预约时间格式为 HH:MM 或 HH:MM-HH:MM（范围格式）
 * 移除秒部分（:SS），确保格式一致
 */

/**
 * 规范化预约时间格式
 *
 * @param timeStr - 预约时间字符串，可能是 HH:MM、HH:MM:SS、HH:MM-HH:MM 或 HH:MM:SS-HH:MM:SS
 * @returns 规范化后的时间字符串，格式为 HH:MM 或 HH:MM-HH:MM
 *
 * @example
 * normalizeAppointmentTime('10:30:00') // '10:30'
 * normalizeAppointmentTime('10:30-11:30') // '10:30-11:30'
 * normalizeAppointmentTime('10:30:00-11:30:00') // '10:30-11:30'
 * normalizeAppointmentTime('10:30') // '10:30'
 */
export function normalizeAppointmentTime(timeStr: string | null | undefined): string {
  if (!timeStr)
    return ''

  const trimmed = String(timeStr).trim()
  if (!trimmed)
    return ''

  // 处理范围格式（如 "10:30-11:30" 或 "10:30:00-11:30:00"）
  if (trimmed.includes('-')) {
    return trimmed
      .split('-')
      .map(part => normalizeSingleTime(part.trim()))
      .join('-')
  }

  // 处理单个时间
  return normalizeSingleTime(trimmed)
}

/**
 * 规范化单个时间字符串（移除秒部分）
 *
 * @param timeStr - 单个时间字符串，如 "10:30:00" 或 "10:30"
 * @returns 规范化后的时间字符串，格式为 HH:MM
 */
function normalizeSingleTime(timeStr: string): string {
  if (!timeStr)
    return ''

  const trimmed = String(timeStr).trim()

  // 匹配 HH:MM:SS 格式，移除秒部分
  const matchWithSeconds = trimmed.match(/^(\d{2}):(\d{2}):(\d{2})$/)
  if (matchWithSeconds) {
    return `${matchWithSeconds[1]}:${matchWithSeconds[2]}`
  }

  // 匹配 HH:MM 格式，直接返回
  if (/^\d{2}:\d{2}$/.test(trimmed)) {
    return trimmed
  }

  // 其他格式原样返回（避免破坏未知格式）
  return trimmed
}
